package com.iflytek.cosmo.ocr.common.exception;


import com.iflytek.cosmo.ocr.common.constant.AbstractExceptionCodeConstant;

/**
 * 基础异常定义
 *
 * @author ljhan2
 */
public abstract class AbstractIflyOcrException extends Exception {

    /**
     * <code>serialVersionUID</code>默认序列化UID
     */
    private static final long serialVersionUID = 1L;

    /**
     * <code>code</code>状态码
     */
    protected Integer code = AbstractExceptionCodeConstant.DEFAULT_EXCEPTION_CODE;


    /**
     * 构造方法
     *
     * @author ljhan2
     */
    public AbstractIflyOcrException(String message, Throwable cause) {
        super(message, cause);
        code = initCode();
    }

    /**
     * 构造方法
     *
     * @author ljhan2
     */
    public AbstractIflyOcrException(String message) {
        super(message);
        code = initCode();
    }

    /**
     * 构造方法
     *
     * @author ljhan2
     */
    public AbstractIflyOcrException(Throwable cause) {
        super(cause);
        initCode();
    }

    /**
     * 获取状态码
     *
     * @return 状态码
     * @author ljhan2
     */
    public int getCode() {
        return code;
    }

    /**
     * 初始化状态码
     *
     * @return 状态码
     * @author ljhan2
     */
    public abstract int initCode();
}
